package com.tjec.project.projectWorkbench.mapper;

import com.tjec.project.projectWorkbench.domain.BmsProject;
import com.tjec.project.projectWorkbench.domain.BmsProjectSimple;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

/**
 * 项目Mapper接口
 *
 * @author tjec
 * @date 2020-04-07
 */
public interface BmsProjectMapper {
    /**
     * 查询项目
     *
     * @param guid 项目guid
     * @return 项目
     */
    public BmsProject selectBmsProjectByGuid(String guid);

    /**
     * 查询项目列表
     *
     * @param bmsProject 项目
     * @return 项目集合
     */
    public List<BmsProject> selectBmsProjectList(BmsProject bmsProject);

    /**
     * 新增项目
     *
     * @param bmsProject 项目
     * @return 结果
     */
    public int insertBmsProject(BmsProject bmsProject);

    /**
     * 批量新增项目
     *
     * @param list 项目list
     * @return 结果
     */
    public int batchInsertBmsProject(@Param("list") List<BmsProject> list);

    /**
     * 修改项目
     *
     * @param bmsProject 项目
     * @return 结果
     */
    public int updateBmsProject(BmsProject bmsProject);
    
    public int updateBmsProjectNew(BmsProject bmsProject);

    /**
     * 修改项目根据项目全局ID
     *
     * @param bmsProject 项目
     * @return 结果
     */
    public int updateBmsProjectByGlobalId(BmsProject bmsProject);

    /**
     * 删除项目
     *
     * @param guid 项目guid
     * @return 结果
     */
    public int deleteBmsProjectByGuid(String guid);

    /**
     * 批量删除项目
     *
     * @param guids 需要删除的数据guid
     * @return 结果
     */
    public int deleteBmsProjectByGuids(String[] guids);

    /**
     * 通过项目负责人查询项目
     *
     * @param projectLeader 项目负责人
     * @return 项目
     */
//    public List<BmsProject> selectBmsProjectByProjectLeader(String projectLeader);

    /**
     * 查询项目
     *
     * @param bmsProject 项目
     * @return 项目
     */
    List<BmsProjectSimple> selectBmsProjectGlanceList(BmsProjectSimple bmsProject);

    /**
     * 项目冻结/解冻（编辑）
     *
     * @param guid 项目guid
     * @return 项目
     */
    BmsProject selectBmsProjectById(String guid);

    /**
     * 项目信息根据用户guid
     *
     * @param userGuid 登录用户guid
     * @return 项目
     */
    BmsProject selectBmsProjectByUserGuid(String userGuid);

    /**
     * 获取最大时间戳
     *
     * @return
     */
    String getMaxTimeStamp();

    /**
     * 获取模拟数据，上线删除
     */
    List<BmsProject> getSimulatedData();
    /**
     * 获取最大时间戳
     */
    long selectMaxTime();
    /**
     * 获取最大时间戳 项目负责人的
     */
    long selectMaxTimeLeaderNo(@Param("projectLeaderNo")String projectLeaderNo);

    /**
     *修改项目负责人代码通过项目负责人Guid
     * @param projectLeader
     * @param projectLeaderNo
     * @return
     */
    int updateBmsProjectLeaderNoByProjectLeader(@Param("projectLeader") String projectLeader, @Param("projectLeaderNo")String projectLeaderNo);

    /**
     *项目负责人项目IDs
     * @param projectLeaderNo
     * @param projectStatus
     * @return
     */
    Set<String> selectBmsProjectLeaderByUserIdOrProjectStatus(@Param("projectLeaderNo") String projectLeaderNo, @Param("projectStatus")String projectStatus);

    /**
     * 修改项目项目经理
     * @param projectId 项目Id
     * @param projectManager 项目经理用户id
     * @return
     */
    int updateBmsProjectManager(@Param("projectId")String projectId, @Param("projectManager")String projectManager);

    /**
     * 项目清单列表-移动端
     * @param bmsProject
     * @return
     */
    List<BmsProject> selectBmsProjectMobileList(BmsProject bmsProject);

    /**
     * 项目概况-移动端
     * @param guid
     * @return
     */
    BmsProject selectBmsProjectByGuidMobile(String guid);

    /**
     * 项目工作台列表-移动端
     * @param bmsProject
     * @return
     */
    List<BmsProject> selectBmsProjectGlanceMobileList(BmsProject bmsProject);
    
    /**
     * 查询本项目结项状态
     * @param projectId
     * @return
     */
    String checkProjectStatus(String projectId);
    
    
    /**
     * 查询此人是否是当前项目成员或项目负责人
     * @param projectId 项目ID
     * @param userId 用户ID
     * @return
     */
    public int checkUserIsMember(@Param("projectId")String projectId,@Param("userId")String userId,@Param("jobNo")String jobNo);
    
    public int checkUserIsMemberList(@Param("userId")String userId,@Param("jobNo")String jobNo);
}


